package demo3;

/**
 *  一个线程做累加操作  另一个线程等待累加结束后打印结果
 *
 */

public class Text01 {
    public static void main(String[] args) throws InterruptedException {
        Result result = new Result();

        // 创建一个线程进行累加操作
        Thread t = new Thread() {
            @Override
            public void run() {
                int sum = 0;
                for (int i = 1; i <= 1000; i++) {
                    // 执行累加操作
                    sum += i;
                }
                // 为结果赋值
                result.sum = sum;
                // 唤醒等待的线程
                synchronized (result.lock) {
                    result.lock.notify();
                }
            }
        };
        // 启动线程
        t.start();
        // 也可用join()
//        t.join();
        // 要主线程中获取结果，这时线程t还没有计算完成
        synchronized (result.lock) {
            // 检查累加是否执行完成
            while (result.sum == 0) {
                // 没有累加完成，等待结果
                result.lock.wait();
            }
            // 打印结果
            System.out.println(result.sum);
        }
    }
}

// 中间变量，进行保存累加结果
class Result {
    // 累加和
    public int sum = 0;
    // 锁对象
    public Object lock = new Object();
}